﻿#define _CRT_SECURE_NO_WARNINGS
// ↑ 将本行在代码放在第一行可以避免 scanf的报错问题（仅在VS编译器里）
//【进阶】1.二叉树
// ↑ 将本行在代码放在第一行可以避免 scanf的报错问题（仅在VS编译器里）
//【初阶】45.1 栈和队列2
//【初阶】45.2 栈和队列2
//【初阶】45.3 栈和队列2


//【头文件包含】

#include"Heap.h"


//【结构体声明】
/*定义一种树结构*/typedef struct TreeNode
{
	int val;
	struct TreeNode* leftChild;
	struct TreeNode* rightBrother;
};

//【函数声明】
void Test1();

//【主函数】
int main()
{

	Test1();
	return 0;
}

//【函数】

/*测试用例*/void Test1()
{
	int arr[] = { 27,15,19,18,28,34,65,49,25,37 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	Hp  heap1;
	HeapInit(&heap1, arr, sz);
	HeapPrint(&heap1);

}



//【笔记】
//【初阶】46.二叉树
	//树的一些概念	
		//树：是一种非线性结构，在数据结构中，树的结构是倒挂的，根在上，枝在下,树一般有一个指针指向根
		// 树由节点组成，有子节点的是分支节点、没有子节点的是叶
		//一种树的结构定义，包含两个指针一个是最左边的孩子 和最右边的兄弟
		//另一种树的结构定义，利用两个数组，一个数组存树的所有节点，另一个数组存放每个节点对应父节点的下标
		//树是由递归而来,因为任何一颗树都可以看做是根和他的子树构成，子树和原本的树结构形态相似
		//树的子树不想交，除根节点，每个节点只有一个父节点，树的节点数N，树的边数N-1
	//二叉树
		//二叉树最大的度为2，即每个节点最多只有两个子节点，第一个子节点叫做做孩子、第二个子节点叫右孩子
		//利用数组实现的二叉树
		// 父节点下标为i,左孩子下标为2*i+1;右孩子下标为2*i+2; 
		// 子节点下标为i，父节点下标为(i-1)/2; 
		//利用链表实现二叉树
		// 存放左孩子右孩子指针的链表叫二叉链，存放左孩子、右孩子、父节点指针的链叫三叉链
		//堆(完全二叉树)
		//小根堆，父节点小于子节点		//大根堆，父节点大于子节点